package com.demo.util;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

public class DXWSMSUtils {
	private static final String account = "15161186695";
	private static final String pwd = "ABCF6ABD13F436FA93FDDAFADEBF";
	private static final String url = "http://web.duanxinwang.cc/asmx/smsservice.aspx?";
	
	private static Map<String, Sendsms> smsError;
	
	static{
		init();
	}
	
	/**
	 * @返回code 4086：频繁发送
	 */
	public static Sendsms push(String mobile,String content) throws Exception{
		String sign = "蹭蹭吧";
		
		// 创建StringBuffer对象用来操作字符串
		StringBuffer sb = new StringBuffer(url);
		
		// 向StringBuffer追加用户名
		sb.append("name="+account);

		// 向StringBuffer追加密码（登陆网页版，在管理中心--基本资料--接口密码，是28位的）
		sb.append("&pwd="+pwd);

		// 向StringBuffer追加手机号码
		sb.append("&mobile="+mobile);

		// 向StringBuffer追加消息内容转URL标准码
		sb.append("&content="+URLEncoder.encode(content,"UTF-8"));
		
		//追加发送时间，可为空，为空为及时发送
		sb.append("&stime=");
		
		//加签名
		sb.append("&sign="+URLEncoder.encode(sign,"UTF-8"));
		
		//type为固定值pt  extno为扩展码，必须为数字 可为空
		sb.append("&type=pt&extno=");
		// 创建url对象
		URL url = new URL(sb.toString());

		// 打开url连接
		HttpURLConnection connection = (HttpURLConnection) url.openConnection();

		// 设置url请求方式 ‘get’ 或者 ‘post’
		connection.setRequestMethod("POST");

		// 发送
		InputStream is =url.openStream();

		//转换返回值
		String returnStr = StringUtil.convertStreamToString(is);
		
		// 返回结果为‘0，20140009090990,1，提交成功’ 发送成功   具体见说明文档
		System.out.println(returnStr);
		// 返回发送结果
		return DXWSMSUtils.getSmsError(returnStr.split(",")[0]);
	}
	
	private static void init(){
		smsError = new HashMap<String, Sendsms>();
		Sendsms[] arr = Sendsms.values();
		for (Sendsms sendsms : arr){
			smsError.put(sendsms.getCode(), sendsms);
		}
	}
	
	public static Sendsms getSmsError(String code) throws Exception {
		if (smsError == null) init();
		return smsError.get(code);
	}

}

